﻿// Inner Fire 游戏引擎库
// MapObject - 地图对象
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 所属层级：应用层（4）
// 用于游戏的地图。我居然想到把整个地图都做为一个对象。简直丧心病狂。
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-06-14

#pragma once


#include <dx/mesh/map_blocks.h>
#include <game/object/game_object.h>
#include <glm.hpp>
#include <game/map/map.h>
#include <game/map/map_setting.h>

namespace ifire::game {
class Model;

class MapObject : public GameObject {
public:
  MapObject(
      ikit::sstr name, Scene* scene, GameObject* parent = nullptr);
  MapObject(const MapObject& lhs) = delete;
  MapObject& operator=(const MapObject& lhs) = delete;
  ~MapObject() override;

  // 设置相应用信息
  void SetInfo(const SimpleMap* map, const MapSetting* setting);
  // 设置整个地图的位置，连动更新所有地图点（暂时不实装）
  void SetPosition(IVec3 position);

  // IVec3
  void FixedUpdate() override;
  // 设置用于地形的Block
  void SetTerrainBlocks(dx::MapBlocks* blocks);

private:
  dx::MapBlocks* terrain_blocks_;
  const SimpleMap* map_;
  const MapSetting* setting_;

};
} // namespace ifire::game